class MathTool {
    // MathTool的全局唯一单例
    static singleton = null;

    /* 获取MathTool的全局唯一单例 */
    static getSingleton() {
        /* 第一次获取单例的时候 对单例进行初始化 */
        // 静态方法中的this位当前类
        if (!this.singleton) {
            this.singleton = new MathTool();
        }

        // 永远返回该单例
        return this.singleton;
    }

    getRandom(a, b) {
        return a + Math.round((b - a) * Math.random());
    }

    // excluedes为无效数据
    getRandomWithExcludes(a, b, excludes = []) {
        let temp;
        while (
            excludes.includes((temp = a + Math.round((b - a) * Math.random())))
        ) {
            // temp = a + Math.round((b - a) * Math.random())
        }
        return temp;
    }

    getRandomColor() {
        const red = this.getRandom(0, 255);
        const green = this.getRandom(0, 255);
        const blue = this.getRandom(0, 255);
        return `rgb(${red},${green},${blue})`;
    }
    isPrimeNumber(n) {
        let isPN = true;
        for (let i = 2; i <= Math.ceil(Math.sqrt(n)); i++) {
            if (n % i === 0) {
                isPN = false;
                break;
            }
        }
        return isPN;
    }
}
